package com.hsp.core.service;

import com.hsp.core.pojo.BasePoJo;

import java.util.List;

/**
 * @Author 褐发蓝眼的猫
 * @Date 2019/3/15 19:49
 * @Description 基础服务类接口
 **/
public interface BaseService<T extends BasePoJo, PK>
{
    /**
     * 基础保存
     * @param t
     * @return
     */
    int save(T t);

    /**
     * 根据主键删除
     * @param pk
     * @return
     */
    int delete(PK pk);

    /**
     * 动态更新
     * @param t
     * @return
     */
    int updateByPrimaryKeySelective(T t);

    /**
     * 主键查询
     * @param pk
     * @return
     */
    T selectByPrimaryKey(PK pk);

    /**
     * 按条件查询单个对象
     * @param t
     * @return
     */
    T selectOne(T t);

    /**
     * 条件查询列表数据
     * @param c
     * @return
     */
    List<T> listByCondition(T c);

    /**
     * 条件查询所有
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<T> listAll(int pageNum, int pageSize);

    /**
     * 根据主键id批量查询
     * @param ids
     * @return
     */
    List<T> listByIds(List<PK> ids);

    /**
     * 批量插入
     * @param list
     * @return
     */
    int insertBatch(List<T> list);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    int deleteBatchByIds(List<PK> ids);
}
